package com.ledim.utils;

import android.content.Context;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;

/**
 * Created by insthub on 2015/11/18.
 */
public class LocationUtil implements BDLocationListener {

    private static LocationUtil self;
    private static Context mContext;
    private LocationClient mLocationClient;

    public static LocationUtil getInstance(Context context) {
        mContext = context;
        if (self == null) {
            return new LocationUtil();
        } else {
            return self;
        }

    }

    private LocationUtil() {}

    public void initLocation() {
        mLocationClient = new LocationClient(mContext.getApplicationContext());
        mLocationClient.registerLocationListener(this);
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选，默认高精度，设置定位模式，高精度，低功耗，仅设备
        option.setCoorType("bd09ll");//可选，默认gcj02，设置返回的定位结果坐标系，
        option.setScanSpan(2000);
        option.setIsNeedAddress(true);//可选，设置是否需要地址信息，默认不需要
        option.setOpenGps(true);//可选，默认false,设置是否使用gps
        option.setLocationNotify(false);//可选，默认false，设置是否当gps有效时按照1S1次频率输出GPS结果
        option.setIgnoreKillProcess(true);//可选，默认true，定位SDK内部是一个SERVICE，并放到了独立进程，设置是否在stop的时候杀死这个进程，默认不杀死
        option.setEnableSimulateGps(false);//可选，默认false，设置是否需要过滤gps仿真结果，默认需要
        option.setIsNeedLocationDescribe(true);//可选，默认false，设置是否需要位置语义化结果，可以在BDLocation.getLocationDescribe里得到，结果类似于“在北京天安门附近”
        option.setIsNeedLocationPoiList(true);//可选，默认false，设置是否需要POI结果，可以在BDLocation.getPoiList里得到
        mLocationClient.setLocOption(option);
        mLocationClient.start();
    }

    @Override
    public void onReceiveLocation(BDLocation bdLocation) {
        if (bdLocation.getCity() != null) {
            bdLocation.getCity();
            if (mLocationClient.isStarted()) {
                mLocationClient.stop();
            }
            LedimSpUtils.setLocationLatitude(String.valueOf(bdLocation.getLatitude()));
            LedimSpUtils.setLocationLongitude(String.valueOf(bdLocation.getLongitude()));
        }

    }
}
